<?php
/**
 * Klasse für Kommentare
 */
class Model_Comment extends Zend_Db_Table_Abstract
{
    /** Table name */
    protected $_name = 'comment';
	/** Primary Key */
    protected $_primary = 'cid';

    public function createComment($data) {
    	
    	//Der Parameter edittype muss aus den Postdaten entfernt werden, da es kein entsprechendes DB-Feld gibt
    	unset($data['edittype-comment']);
    	//@TODO: Macht es evtl. Sinn, hier ein Array mit erlaubten Feldnamen zu erstellen, über das dann die Postdaten gefiltert werden?
    	
    	//Datum in Timestamp umwandeln
    	$data['created'] = time();
    	
    	//Objekt für den aktuellen User
		$user = Zend_Auth::getInstance()->getIdentity();
    	//Ersteller-ID verspeichern
    	$data['ownerid'] = $user->uid;
    	
    	$lastinsert_id = parent::insert($data);
    	return $lastinsert_id;
    	
    }
    
	public function updateComment($cid, $data) {
    	
    	//Der Parameter edittype muss aus den Postdaten entfernt werden, da es kein entsprechendes DB-Feld gibt
    	unset($data['edittype']);
    	unset($data['cid']);
    	//@TODO: Macht es evtl. Sinn, hier ein Array mit erlaubten Feldnamen zu erstellen, über das dann die Postdaten gefiltert werden?
    	
    	//Datum in Timestamp umwandeln
    	$data['deadline'] = strtotime($data['deadline']);
    	
    	$rows_updated = $this->update($data, $this->getAdapter()->quoteInto('cid = ?',$cid));
    	return $rows_updated;
    	
    }
    
	public function deleteComment($cid) {
    	
    	$comment = $this->getCommentByID($cid);
		//Objekt für den aktuellen User
		$user = Zend_Auth::getInstance()->getIdentity();
		//nur Ersteller dürfen Kommentare löschen
		//@TODO: hier Admins hinzufügen
		if($comment['ownerid'] != $user->uid) {
			return false;
		}
		
		$rows_deleted = $this->delete($this->getAdapter()->quoteInto('cid = ?',$cid));
    	return $rows_deleted;
    	
    }
    
	public function getCommentByID($cid) {
    	
    	$comment = $this->find($cid)->toArray();
		return count($comment) == 1 ? $comment[0] : false;
    	
    }
	
    public function getCommentsByTicketID($tid) {
    	
    	$where = $this->select()
                         	->where('tid = ?', $tid)
                         	->order('position');
    	return $this->fetchAll($where, $order, $count, $offset);
    	
    }
    
	public function getNextCommentPosition($tid) {
    	
    	$where = $this->select()
                         	->where('tid = ?', $tid)
                         	->order('position');
    	return (count($this->fetchAll($where, $order, $count, $offset)) + 1);
    	
    }
    
};

?>